window = global;
/* object 形式（字典形式） */
!function (e) {
    var t = {};
    //加载器函数
    function n(r) {
        //1. 判断是否第一次调用
        if (t[r])
            return t[r].exports;
        //2. 如果是第一次调用，则创建一个对象，并把对象放入缓存中
        var o = t[r] = {
            i: r,
            1: !1,
            exports: {}
        };
        //3. 执行模块代码
        console.log("R:::", r);
        e[r].call(o.exports, o, o.exports, n);
        return o.exports.exports;//返回 0.exports.exports，而不是整个 o.exports 对象
    }
    //暴露加载器到window全局对象中
    window.loader = n;

    //初始化函数，需要注释
    // n("1002");
}(
    {
        "1002": function (e, t, n) {
            // console.log("1002-log");
            this.exports = "1002";
        }
        ,
        "1003": function (e, t, n) {
            // console.log("1003-log");
            this.exports = "1003";
        }
    }
)

/* // 1. 在函数自执行外的作用域调用某个功能模块
console.log(window.loader("1003")); */

/* 2. 打上执行模块日志，一个模块会嵌套调用其他模块，查看模块的调用栈
      我们可以发现是哪个模块出错从而判断，该模块是否没有加载，再全局搜索该模块键值将其模块函数copy进自执行参数来
*/
console.log(window.loader("1003"));

// 3. 注释初始化函数（可能涵盖环境监测），位于在加载器函数后调用
